It is often necessary in a video communication system to translate signals between various formats. For example, it may be necessary to translate a signal encoded in H.264 into a signal encoded in MPEG-4. In order to accomplish this, a transcoding gateways application (i.e., a transcoder) can be provided.
A media gateway often contains multiple channels, each of which can translate a video stream from one format to another. Typically the gateway receives video streams over IP networks, transcodes the content and sends the transcoded media on IP network. These channels each buffer incoming packets, decode the packets from one format, and then re-encode them into a second format for transmission. However, due to the bursty nature of signal traffic it can be difficult to allocate resources in the media gateway efficiently among the channels.
Encoding is typically more resource-intensive then decoding. In practical terms that means that an encoder takes a greater amount of MIPS (i.e., million instructions per second) as compared to a decoder. As a result, when incoming packets are buffered in a transcoding channel, the encoder typically governs the drain rate of the buffer on the decoder leg.
When consecutive frames are consuming a higher than average/median MIPS budget, the input buffer will begin to fill faster than it drains. If it reaches its maximum level, then frames will have to be dropped for decoding. This can cause problems with decoding, since video decoding is often heavily reliant upon information from adjacent packets. Thus, when packets are dropped, decoding quality can drop dramatically.
One way to ensure adequate decoding resources for each channel would be to provide processing for each channel sufficient to meet a worst-case scenario (i.e., a worst-case MIPS load for the channel). However, using such a system can be very wasteful, since in a worst-case each channel can demand a great deal of resources. Because this would require each channel to be allocated resources based on a worst-case, during most normal operation such channels would have a large amount of unused processing capacity going to waste.
It would therefore be desirable to provide an adaptive transcoder that can allocate its resources as needed when channels become congested. It would further be desirable to provide a transcoder that can account for situations in which all available channels are congested at the same time, and can limit image processing and encoding operations, while continuing to allow the decoding operation to use as much of the processing resources as it requires.